/** Copyright (c) 2008-2009, Markos Evlogimenos
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * The name of Markos Evlogimenos may be used to endorse or
 *		 promote products derived from this software without specific
 *		 prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */

package org.kamimark.properties;

import java.io.File;
import java.io.IOException;
import java.net.URL;

public abstract class Files
{

	private static final ClassLoader classLoader = Files.class.getClassLoader();
	private static final String ROOT = "res" + File.separator;
	private static final String DATA = ROOT + "data" + File.separator;
	private static final String MAPS = ROOT + "maps" + File.separator;
	private static final String PROPERTIES = DATA + "properties" + File.separator;

	private static final String MAPS_EXT = ".png";

	private static File getFile(final String fullfileName) {
		final File x = new File(fullfileName);
		// Yes it's file x... the truth is out there ;)
		try {
			if (!x.exists()) {
				x.getParentFile().mkdirs();
				x.createNewFile();
			}
		} catch (final IOException e) {
			e.printStackTrace();
		}

		return x;

	}

	public static File getResourceData(final String fileName) {
		return getFile(DATA + fileName);
	}

	public static URL getResourceMapURL() {
		return getResourceMapURL("RxXyYzZ");
	}

	public static URL getResourceMapURL(final String string) {
		return classLoader.getResource(MAPS + string + MAPS_EXT);
	}

	public static File getResourceProperty(final String fileName) {
		return getFile(PROPERTIES + fileName + ".properties");
	}

	public static boolean resourceDataExist(final String fileName) {
		return (new File(DATA + fileName)).exists();
	}

	public static boolean resourcePropertyExist(final String fileName) {
		return (new File(PROPERTIES + fileName + ".properties")).exists();
	}

}
